package cn.iocoder.yudao.module.book.dal.mysql.community;

import java.util.*;

import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.book.dal.dataobject.community.PostLikesDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 点赞 Mapper
 *
 * @author system
 */
@Mapper
public interface PostLikesMapper extends BaseMapperX<PostLikesDO> {

    /**
     * 查询用户对动态的点赞记录
     */
    default PostLikesDO selectPostLike(Long postId, Integer userId) {
        return selectOne(new LambdaQueryWrapperX<PostLikesDO>()
                .eq(PostLikesDO::getPostId, postId)
                .eq(PostLikesDO::getUserId, userId)
                .eq(PostLikesDO::getLikeType, 1));
    }

    /**
     * 查询用户对评论的点赞记录
     */
    default PostLikesDO selectCommentLike(Long commentId, Integer userId) {
        return selectOne(new LambdaQueryWrapperX<PostLikesDO>()
                .eq(PostLikesDO::getCommentId, commentId)
                .eq(PostLikesDO::getUserId, userId)
                .eq(PostLikesDO::getLikeType, 2));
    }

    /**
     * 批量查询用户对动态的点赞状态
     */
    List<PostLikesDO> selectPostLikesByUser(@Param("postIds") List<Long> postIds, 
                                           @Param("userId") Integer userId);

    /**
     * 批量查询用户对评论的点赞状态
     */
    List<PostLikesDO> selectCommentLikesByUser(@Param("commentIds") List<Long> commentIds, 
                                              @Param("userId") Integer userId);

}
